package net.comfycastle.musicplayer;

import android.content.Context;
import android.database.Cursor;
import android.support.v4.widget.CursorAdapter;
import android.view.View;
import android.widget.TextView;

/**
 * 리스트뷰의 항목 뷰에 두 개의 각기 다른 정보가 등록되어야 할 때를 위한 Adapter
 * @author ricale
 *
 */
class SongListMCAdapter extends MusicCursorAdapter {
	///////////
	//////////
	/////////   enum
	
	/** adapter와 연결된 cursor의 데이터 상태를 표시 */
	public static enum VIEWSTATE {
		/** 곡명과 앨범명을 다루는 상태 */
		TITLE_ALBUM,
		/** 곡명과 아티스트명을 다루는 상태 */
		TITLE_ARTIST
	} // end VIEWSTATE
	
	///////////
	//////////
	/////////   constant
	
	/** VIEWSTATE에 따라 리스트뷰 항목뷰에 부착될 데이터의 이름(태그) */
	private static final String[][] adaptedTagList = new String[][] {
		new String[] { MPApp.TAG_TITLE, MPApp.TAG_ALBUM },
		new String[] { MPApp.TAG_TITLE, MPApp.TAG_ARTIST },
	}; // end adaptedTagList
	
	///////////
	//////////
	/////////   variable
	
	private VIEWSTATE mViewMode;
	
	///////////
	//////////
	/////////   constructor
	
	public SongListMCAdapter(Context context, Cursor cursor) {
		this(context, R.layout.listitem_songlist, cursor, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
	} // end SongListMCAdapter(Context, Cursor)
	
	/**
	 * 생성자
	 * @param context Adapter를 생성하는 Context
	 * @param layout  항목 뷰 레이아웃의 리소스 아이디
	 * @param cursor  데이터 Cursor
	 * @param flags
	 */
	public SongListMCAdapter(Context context, int layout, Cursor cursor, int flags) {
		super(context, layout, cursor, flags);
	} // end SongListMCAdapter(Context, int, Cursorr, int)
	
	///////////
	//////////
	/////////   setter
	
	/**
	 * 항목 뷰에 등록(binding)될 정보의 종류를 설정한다
	 * VM_ALBUM_ARTIST, VM_TITLE_ALBUM, VM_TITLE_ARTIST 참조
	 * @paran viewMode 정보의 종류를 구분하기 위한 상수
	 */
	public void setViewState(VIEWSTATE viewState) {
		mViewMode = viewState;
	} // end setViewMode
	
	///////////
	//////////
	/////////   callback method
	
	/**
	 * 각각의 항목 뷰에 정보들을 등록(binding)하기 위한 콜백 메소드
	 */
	@Override
	public void bindView(View view, Context context, Cursor cursor) {
		TextView tv1 = (TextView)view.findViewById(R.id.listitem_songlist_title);
		TextView tv2 = (TextView)view.findViewById(R.id.listitem_songlist_below);
		
		tv1.setText(cursor.getString(cursor.getColumnIndex(adaptedTagList[mViewMode.ordinal()][0])));
		tv2.setText(cursor.getString(cursor.getColumnIndex(adaptedTagList[mViewMode.ordinal()][1])));
	} // end bindView
} // end SongListMCAdapter